package metier;

/**
 * classe décrivant les caractéristiques d'une tâche définie par
 * 	un id : entier permettant de l'identifier
 * 	un libellé (chaîne de caractères) et une charge prévisionnelle en jours homme (entier) 
 *  l'identifiant du collaborateur responsable de la tâche (entier)
 *  l'identifiant du contrat pour lequel est réalisée la tâche (entier).
 * @author Michele Lamballais
 *
 */
public class Tache {
	 /**
     * Attributs priv�s de la classe Tache
     * idTache, idCollaborateur et refernceContrat de type integer 
     * libelle de type String
     * chargePreviJoursHommes de type entier
     */
	 private long id;
     private String libelle;
     private int chargePreviJoursHomme;
     private long idCollaborateur;
     private long idContrat;
     
     /**
      * constructeur de la classe Tache
      * @param unLibelle
      * @param uneChargePrevi
      * @param unIdCollab
      * @param unIdContrat
      */
      public Tache( String unLibelle, int uneChargePrevi, long unIdCollab, long unIdContrat) {
    	  this.id =0;
    	  this.libelle = unLibelle;
    	  this.chargePreviJoursHomme = uneChargePrevi;
    	  this.idCollaborateur = unIdCollab;
    	  this.idContrat = unIdContrat;
          
      }
     
     /**
      * constructeur de la classe Tache
      * @param unIdTache
      * @param unLibelle
      * @param uneChargePrevi
      * @param unIdCollab
      * @param unIdContrat
      */
      public Tache(long unIdTache, String unLibelle, int uneChargePrevi, long unIdCollab, long unIdContrat) {
    	  this.id = unIdTache;
    	  this.libelle = unLibelle;
    	  this.chargePreviJoursHomme = uneChargePrevi;
    	  this.idCollaborateur = unIdCollab;
    	  this.idContrat = unIdContrat;
          
      }

      // accesseurs
      /**
       * fonction geId() : entier 
       * @return la valeur de l'attribut id
       */
      public long getId()
      {
          return this.id;
      }

      
      /**
       * fonction getLibelle() : chaine de caract�res
       * @return  la valeur de l'attribut libelle
       */
      
      public String getLibelle(){
          return this.libelle;
      }

      /**
       * fonction getChargePreviJoursHomme() : entier
       * @return  la valeur de l'attribut chargePrevisHomme
       */
      public int getChargePreviJoursHomme(){
          return this.chargePreviJoursHomme;
      }
      
      /**
       * fonction getIdContrat() : entier
       * @return  la valeur de l'attribut idContrat
       */
      public long getIdContrat(){
          return this.idContrat;
      }

      /**
       * fonction getIdCollaborateur() : entier
       * @return  la valeur de l'attribut idCollaborateur
       */
      public long getIdCollaborateur(){
          return this.idCollaborateur;
      }


     /**
      * procedure setLibelle( une chaine de carateres)
      * @param unLibelle
      */
      public void setLibelle(String unLibelle){
          this.libelle = unLibelle;

      }
      
      /**
       * procedure setChargePreviJoursHomme( un entier)
       * @param uneChargePreviJH
       */
      public void setChargePreviJoursHomme(int uneChargePreviJH){
          this.chargePreviJoursHomme = uneChargePreviJH;
      }
      
      /**
       * procedure setidCollaborateur( un entier)
       * @param unIdCollab
       */
      public void setidCollaborateur(long unIdCollab){
          this.idCollaborateur = unIdCollab;
      }
      
      /**
       * procedure setidContrat( un entier)
       * @param unIdContrat
       */
      public void setidContrat(long unIdContrat){
          this.idContrat = unIdContrat;
      }

      // autres m�thodes 
      /**
       * fonction estEgal(Tache): booleen
       * @param uneTache
       * @return true si les 2 objets sont identiques
       *         false s'ils sont diff�rents
       */
      public boolean equals(Tache uneTache){
          if (this.id != uneTache.id) return false;
          if (! this.libelle.equals(uneTache.libelle) )return false;
          if (this.chargePreviJoursHomme != uneTache.chargePreviJoursHomme )return false;
          if (this.idContrat != uneTache.idContrat) return false;
          if (this.idCollaborateur != uneTache.idCollaborateur) return false;
          return true;
      }
  
      /**
       * fonction toString(): chaine de caract�res
       * @return objet converti en chaine
       */
      public String toString(){
          String msg = "";
          msg = ((Long) this.id).toString()+ " "+ this.libelle + " ";
          msg += ((Integer) this.chargePreviJoursHomme ).toString()+ " "; 
          msg += ((Long) this.idCollaborateur).toString() +" " ;
          msg += ((Long) this.idContrat).toString() ;
          return msg;
      }
      
      /**
       * fonction toStringDescriptif(): chaine de caract�res
       * @return objet converti en chaine avec commentaire
       */
      public String toStringDescriptif() {
    	  String msg;
    	  msg = "numero : " +  ((Long) this.id).toString() + "\n";
    	  msg += "libelle : " + this.libelle + "\n";
          msg += "charge previsionnelle jours homme : " + ((Integer) this.chargePreviJoursHomme ).toString() +  "\n" ;
          msg += "idCollab collaborateur : "  + ((Long) this.idCollaborateur).toString() + "\n";
          msg += "idContrat contrat : "  + ((Long) this.idContrat).toString() ;
          return msg;
      }



}
